1. Field
The present disclosure relates to a system that includes different types of memory having different performance characteristics. More specifically, the present disclosure relates to a system that includes conditionally executed hints in requests conveyed to a composite memory, which includes the different types of memory.
2. Related Art
Computer systems typically include different types of memory and storage devices, such as: static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, a hard-disk drive (HDD), an optical disk drive, a tape drive and/or a solid-state drive (SSD). Furthermore, software modules within an operating system, which are associated with the different types of memory, are often used to implement a data-storage management system that can handle data requests from the user or an application, as well as from the operating system.
The performance characteristics of the different types of memory can have a strong impact on the overall performance of the computer system. For example, the input/output (I/O) performance of a computer system can be adversely affected by the I/O performance of HDDs. While an HDD can provide a cost-effective storage solution, from a performance perspective it is often a weak link in a computer system, especially when small blocks of fragmented data are transferred between the HDD and the computer system. Moreover, HDDs are often affected by environmental conditions, such as temperature, vibration and/or shock, especially in portable systems. Additionally, an idling HDD can be a major source of power consumption.
In principle, the performance characteristics of other types of memory can be used to offset or mitigate the problems associated with HDDs. However, selecting the appropriate configuration of the types of memory or the disposition of one or more blocks of data among the types of memory can be challenging because there are typically tradeoffs in the performance characteristics of the different types of memory. For example, while SSDs have better I/O performance than HDDs, the cost of SSDs, which can be an order of magnitude larger per gigabyte than HDDs, can be prohibitive. In addition, flash memory (such as NAND flash memory) in SSDs typically has a limited number of programmable cycles.
Hence, what is needed is a technique for specifying the configuration of the types of memory or the disposition of one or more blocks of data in the types of memory that overcomes the problems listed above.